#include "../../include/exception/Exception.h"
#include "../../include/global.h"
#include "../../include/Tool.h"

namespace ZY {

    void Exception::_init(const string &msg, const int code)
    {
        //ctor
        m_msg.assign( msg );
        m_code = code;

        //创建trac信息
//        char buff[2048];
//        size_t size;

        m_trac = Tool::getCalltrac();

//        size = _calltrac( buff );
//
//        m_trac.assign( buff , size );
    }

    Exception::~Exception()
    {
        //dtor
    }


//    size_t Exception::_calltrac( char *buff )
//    {
//        bzero( buff , sizeof( buff ) );
//
//        void *array[10];
//        size_t size;
//        char **strings , *msg;
//        size_t n , f , offset = 0;
//        unsigned i , t ;
//        size = backtrace( array , 10 );
//        strings = backtrace_symbols( array , size );
//
//        for( i = size -1 ; i > 0 ; i -- ) {
//            msg = strings[i];
//            n = strlen( msg );
//            f = 0;
//            for( t = 0 ; t < n ; t ++ ) {
//                if ( msg[t] == '(' ) {
//                    f = 1;
//                    continue;
//                }
//                if ( msg[t] == ')' ) {
//                    buff[offset ++ ] = '/';
//                    break;
//                }
//                if ( f == 1 ) {
//                    buff[ offset ++ ] = msg[t];
//                }
//            }
//        }
//        free( strings );
//        buff[offset] = 0;
//        return offset;
//    }

}
